home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 2 of 2).iso / demos / d008.dms / in.adf / RainbowWarrior.AMOS / RainbowWarrior.amosSourceCode < prev   
Encoding:
AMOS Source Code  |  1991-02-11  |  17.8 KB  |  570 lines

  1. Cls 0
  2. Auto View Off 
  3. '
  4. Rem *  
  5. Rem *
  6. Rem *    The Awesome, Incredible.. the bug-ridden.. the useless... 
  7. Rem *
  8. Rem *             -= R A I N B O W  W A R R I O R !!!! =-  
  9. Rem *
  10. Rem *                           Version 2
  11. Rem *
  12. Rem *            (Even the French couldn't sink this one..)    
  13. Rem *
  14. Rem * Spadge (The little tinker) presents: COPPER DESIGNER!
  15. Rem * This AMOS listing is TUPPERWARE (of course) and was first
  16. Rem * featured on NEWSFLASH disk-magazine (#15)... watch out for Amos
  17. Rem * programs every month.... by us, our readers and F.Lionet!
  18. Rem *
  19. Rem * Scruf-ee programming and sloppy idle routines rule ok... 
  20. Rem *
  21. Rem * Lonely blondes (female.. ahem) with outrageous assests should  
  22. Rem * contact the willing and so often disapointed Spadge at...  
  23. Rem * Newsflash UK, Po Box 13, Ossett, W.Yorks WF5 OXA. Tel 0924 265593
  24. Rem * By the way, ya can also get Newsflash from there too.. :-) 
  25. Rem *
  26. Rem * Feel free to send criticisms, comments and any additional bits that
  27. Rem * you may care to add... but do NOT remove anything from this file,  
  28. Rem * documentation or fiddle with my graphics to a large extent.... 
  29. Rem * or else I'll be a bit pig-sick and won't release anything  
  30. Rem * else, not that you'ld be very worried about that of course...
  31. Rem *
  32. Rem * Ever look at the copper (Rainbow) command and think, yes, well,
  33. Rem * erm - no thanks.. well! Now's the chance to REALLY use it!! Just 
  34. Rem * run this and marvel and the taste of Newcastle Brown Ale... 8^)
  35. Rem *
  36. Rem * I hope you don't expect me to fully comment this appalling program 
  37. Rem * I am NOT the neatest, most schematic programming person.. sorry... 
  38. Rem * Just enjoy the results because, it does actually work.. a bit..
  39. Rem *
  40. Break Off : Colour Back $0
  41. On Error Goto TUTTUT : Rem Ah-haaa.. most errors banished to the dustbin!! :-)
  42. Hide On 
  43. Limit Mouse 130,40 To 440,300 : TL=0 : AC=0
  44. W1Y=40 : R=7 : G=7 : B=7 : CP=1 : MR=R : MG=G : MB=B : PB=0 : Dim BUFFER(300) : BL=0
  45. Dim TEMP(300) : Dim T2(300) : Dim AF(300) : Dim PC(20,2) : For F=1 To 20 : Read PC(F,0) : Read PC(F,1) : Read PC(F,2) : Next F
  46. Data 0,0,0,$F,$F,$F,$F,$0,$0,$0,$F,$0,0,0,$F,0,$F,$F,$F,$F,$0,$F,0,$F,$A,0,0,$D,8,0,$8,$F,0,0,$8,$0,$B,$6,0,$0,$C,$C
  47. Data 0,$A,$F,0,$7,$C,$7,0,$F,$C,0,$E,$C,0,8,$6,$2,0,$D,5,1
  48. Auto View Off 
  49. Screen Open 2,640,10,2,Hires : Curs Off : Cls 0 : Palette 0,$FFF : Screen Display 2,,120,,
  50. Screen Open 0,320,256,16,LORES : Cls 0 : Curs Off : Palette 0,0,0,0 : Cls 0 : Flash Off 
  51. Screen Open 1,640,256,8,Hires : Cls 0 : Curs Off 
  52. Unpack 5 To 1 : Screen Display 1,,W1Y,,60 : Gosub IN : Screen To Back 1 : Screen Display 1,,W1Y,,60 : Gosub S2 : Screen To Front 1
  53. Randomize Timer
  54. Set Rainbow 0,0,290,"","",""
  55. Rainbow 0,0,0,290
  56. AC=1
  57. Gosub GCOL : Change Mouse 2
  58. Show On 
  59. View 
  60. Screen 0
  61. Key Speed 25,2
  62. II:
  63. On Error Goto TUTTUT
  64. Do 
  65. Gosub S2
  66.    I$=Inkey$
  67.    S=Scancode
  68.    Clear Key 
  69.    Screen 0
  70.    K=Mouse Key : If K>0 Then Y=Y Mouse : Gosub MBIT
  71. If S=0 Then Loop 
  72. If S=76 and W1Y>0 Then W1Y=W1Y-32 : Screen Display 1,,W1Y,, : Wait Vbl 
  73. If S=77 and W1Y<280 Then W1Y=W1Y+32 : Screen Display 1,,W1Y,, : Wait Vbl 
  74. If Upper$(I$)="X" Then Key Speed 8,8 : Edit 
  75. If I$="?" Then Gosub S1 : Wait Key : Gosub S3 : Wait Key : Gosub S2
  76. If I$="C" Then Change Mouse 3 : BC=IDX : Colour Back IDX : For F=0 To 280 : Rain(0,F)=IDX : Next F : Change Mouse 2 : View 
  77. If I$="c" Then Change Mouse 3 : BC=0 : Colour Back 0 : For F=0 To 280 : Rain(0,F)=0 : Next F : Change Mouse 2 : View 
  78. If I$="4" and R<15 Then Inc R : Gosub GCOL
  79. If I$="1" and R>1 Then Dec R : Gosub GCOL
  80. If I$="5" and G<15 Then Inc G : Gosub GCOL
  81. If I$="2" and G>1 Then Dec G : Gosub GCOL
  82. If I$="6" and B<15 Then Inc B : Gosub GCOL
  83. If I$="3" and B>1 Then Dec B : Gosub GCOL
  84. If I$="n" Then K=1 : Y=Y Mouse : Gosub MBIT : YUP=Y Mouse : Inc YUP : Y Mouse=YUP : Gosub DARK
  85. If I$="N" Then K=1 : Y=Y Mouse : Gosub MBIT : YUP=Y Mouse : Dec YUP : Y Mouse=YUP : Gosub DARK
  86. If Upper$(I$)="G" Then MR=R : MG=G : MB=B : S$="Colour Put in Memory" : Gosub DT : Wait 50 : Screen To Back 2
  87. If Upper$(I$)="R" Then R=MR : G=MG : B=MB : S$="Colour Grabbed from Memory" : Gosub DT : Wait 50 : Screen To Back 2 : Gosub GCOL
  88. If I$="-" Then Gosub DARK
  89. If I$="+" Then Gosub BRIGHT
  90. If Upper$(I$)="D" Then Gosub DARK
  91. If Upper$(I$)="B" Then Gosub BRIGHT
  92. If I$="*" Then Gosub RANDC
  93. If I$="/" Then Gosub POC
  94. If Upper$(I$)="M" Then Gosub MIRROR
  95. If I$="k" Then Gosub CUT
  96. If I$="K" Then Gosub CUT2
  97. If Upper$(I$)="P" Then Gosub PASTE
  98. If Upper$(I$)="F" Then Gosub FID
  99. If Upper$(I$)="U" Then Gosub UNDO
  100. If Upper$(I$)="Z" Then Gosub SAV
  101. If Upper$(I$)="E" Then Gosub EX
  102. If Upper$(I$)="H" Then Gosub SNATCH
  103. If Upper$(I$)="S" Then Gosub SAVIT
  104. If I$="l" Then Gosub LSCR
  105. If I$="L" Then Gosub LBUF
  106. If I$="I" Then Screen 0 : TL=0 : Cls 0 : Gosub GCOL : Goto II
  107. If I$="i" Then Gosub LTEMP
  108. If Upper$(I$)="A" and TL=1 Then AC=1 : Gosub AFFECT
  109. Goto II
  110. AFFECT:
  111. Gosub S1 : Screen To Back 1 : Screen 0
  112. For F=0 To 280 : AF(F)=Rain(0,F) : Next F
  113. Set Rainbow 0,AC,290,"","",""
  114. Rainbow 0,0,0,290
  115. For F=0 To 280 : Rain(0,F)=AF(F) : Next F : View 
  116. Do 
  117. K$=Upper$(Inkey$)
  118. Exit If K$="A"
  119. If K$="[" and AC>0 Then Dec AC : Goto AFFECT
  120. If K$="]" and AC<15 Then Inc AC : Goto AFFECT
  121. Loop 
  122. Screen To Front 1 : Screen 0
  123. Set Rainbow 0,0,290,"","",""
  124. Rainbow 0,0,0,290
  125. For F=0 To 280 : Rain(0,F)=AF(F) : Next F : View 
  126. AC=0
  127. Return 
  128. GCOL:
  129. IDX=(256*R)+(16*G)+B : Screen 1 : Palette ,,,,,,,IDX : Screen 0 : Return 
  130. MBIT:
  131. If K=2 Then Goto SCRUBBIT
  132. Y1=Y Screen(Y)
  133. Rain(0,Y1+2)=IDX : View 
  134. Return 
  135. SCRUBBIT:
  136. Y1=Y Screen(Y Mouse)
  137. Rain(0,Y1+2)=BC : View 
  138. Return 
  139. DARK:
  140. If R>0 Then Dec R
  141. If G>0 Then Dec G
  142. If B>0 Then Dec B
  143. Gosub GCOL : Return 
  144. BRIGHT:
  145. If R<14 Then Inc R
  146. If G<14 Then Inc G
  147. If B<14 Then Inc B
  148. Gosub GCOL : Return 
  149. RANDC:
  150. R=Rnd(15) : G=Rnd(15) : B=Rnd(15) : Gosub GCOL : Return 
  151. S1:
  152. Screen Offset 1,,3 : Wait Vbl : Return 
  153. S2:
  154. Screen Offset 1,,62 : Wait Vbl : Return 
  155. S3:
  156. Screen Offset 1,,121 : Wait Vbl : Return 
  157. S4:
  158. Screen Offset 1,,181 : Wait Vbl : Return 
  159. POC:
  160. Inc CP
  161. If CP=21 Then CP=1
  162. R=PC(CP,0)
  163. G=PC(CP,1)
  164. B=PC(CP,2) : Gosub GCOL
  165. Return 
  166. MIRROR:
  167. S$="Select region to mirror..." : Gosub DT
  168. GROWBOX
  169. YA=GY1
  170. YB=GY2
  171. S$="Press T: Mirror on the top, B: Mirror on bottom or E: Exit" : Gosub DT
  172. Do 
  173.    KK$=Upper$(Inkey$)
  174.    Exit If KK$="T"
  175.    Exit If KK$="B"
  176.    Exit If KK$="E"
  177. Loop 
  178. Screen To Back 2
  179. If KK$="E" Then Return 
  180. If KK$<>"T" Then Goto SKIP
  181. For F=2 To(GY2+1)-(GY1-1)
  182.    If GY1-F<0 Then Goto MS
  183.    Rain(0,GY1-F+3)=Rain(0,GY1+F)
  184.    View 
  185.    MS:
  186. Next F
  187. Return 
  188. SKIP:
  189. If KK$="A" Then Return 
  190. For F=0 To(GY2+1)-(GY1-1)
  191.    If GY2+F+2>280 Then Goto MS2
  192.    Rain(0,GY2+F+2)=Rain(0,GY2-F)
  193.    View 
  194.    MS2:
  195. Next F : Return 
  196. Procedure GROWBOX
  197.    Screen 0 : 
  198.    Shared GX1,GX2,GY1,GY2
  199.    Change Mouse 1
  200.    Ink 1
  201.    Gr Writing 4+2+1
  202.    Repeat 
  203.       If Mouse Key=1
  204.          GX1=X Screen(X Mouse) : GY1=Y Screen(Y Mouse) : GX2=GX1 : GY2=GY1
  205.          While Mouse Key=1
  206.             Box GX1,GY1 To GX2,GY2
  207.             GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse)
  208.             Box GX1,GY1 To GX2,GY2
  209.          Wend 
  210.          Box GX1,GY1 To GX2,GY2 : GRABBED=True
  211.          If GX1>GX2 : T=GX1 : GX1=GX2 : GX2=T : End If 
  212.          If GY1>GY2 : T=GY1 : GY1=GY2 : GY2=T : End If 
  213.       End If 
  214.    Until GRABBED
  215.    Change Mouse 2 : X Mouse=200 : 
  216. End Proc
  217. DT:
  218. Screen 2 : Cls : Ink 1 : Writing 1,2 : Centre S$ : Screen To Front 2 : Screen 0 : Return 
  219. CUT:
  220. S$="Cut Now..." : Gosub DT
  221. GROWBOX
  222. YA=GY1
  223. YB=GY2 : PB=1
  224. S$="Colours now in paste buffer !" : Gosub DT
  225. For F=2 To(GY2+1)-(GY1-1)
  226.    BUFFER(F-1)=Rain(0,GY1+F)
  227. Next F
  228. BL=GY2-GY1 : Wait 50 : Screen To Back 2
  229. Return 
  230. CUT2:
  231. S$="Cut now..." : Gosub DT
  232. GROWBOX
  233. YA=GY1
  234. YB=GY2 : PB=1
  235. S$="Colours now in paste buffer !" : Gosub DT
  236. For F=2 To(GY2+1)-(GY1-1)
  237.    BUFFER(F-1)=Rain(0,GY1+F)
  238.    Rain(0,GY1+F)=BC : View 
  239. Next F
  240. BL=GY2-GY1 : Wait 50 : Screen To Back 2
  241. Return 
  242. FID:
  243. S$="Select region to fill.." : Gosub DT
  244. GROWBOX
  245. YA=GY1
  246. YB=GY2
  247. For F=GY1+2 To GY2+2
  248. Rain(0,F)=IDX : View : Next F : Screen To Back 2
  249. Return 
  250. PASTE:
  251. If PB=0 Then S$="Nothing in buffer! Cut something first!!" : Gosub DT : Wait 75 : Screen To Back 2 : Return 
  252. Y1=Y Screen(Y Mouse)
  253. For F=1 To BL
  254.    If Y1-1+F+2>280 Then Goto PS
  255.    Rain(0,Y1-1+F+2)=BUFFER(F) : View 
  256.    PS:
  257. Next F
  258. Return 
  259. UNDO:
  260. S$="Really Refresh ? Y/N" : Gosub DT
  261. Do 
  262.    K$=Upper$(Inkey$)
  263.    Exit If K$="Y"
  264.    Exit If K$="N"
  265. Loop 
  266. Screen To Back 2
  267. If K$="N" Then Return 
  268. For F=0 To 280 : Rain(0,F)=BUFFER(F) : Next F : View : Return 
  269. SAV:
  270. For F=0 To 280 : BUFFER(F)=Rain(0,F) : Next F
  271. S$="Colour contents saved! (U to refresh)" : Gosub DT : Wait 50 : Screen To Back 2
  272. Return 
  273. IN: Screen Display 1,,132,, : Gosub S1 : Auto View On : View : Gosub GM : Gosub S3 : Gosub GM : Return 
  274. TUTTUT:
  275. S$="There's been a cock-up, but I don't think it's anything to worry about!" : Gosub DT : Wait 150 : Screen To Back 2 : Resume II
  276. EX:
  277. S$="Select region to expand" : Gosub DT
  278. GROWBOX
  279. Change Mouse 3 : Screen To Back 2
  280. ER=2 : Screen 0
  281. For F=1 To(GY2-GY1)+4
  282.    T2(F)=Rain(0,F+GY1+1)
  283. Next F
  284. TBL=(GY2-GY1)*ER
  285. For F=1 To(TBL+4)/ER
  286.    If GY1+(F*ER)-1>280 Then Goto EXS
  287.    Rain(0,GY1+1+(F*ER))=T2(F) : View 
  288.    For H=1 To ER-1
  289.    Rain(0,GY1+1+(F*ER)+H)=T2(F) : View : Next H
  290.    EXS:
  291. Next F
  292. Change Mouse 2
  293. Return 
  294. SNATCH:
  295. Y=Y Screen(Y Mouse)
  296. CL=Rain(0,Y+2)
  297. R=Int(CL/256) : CL=CL-(R*256)
  298. G=Int(CL/16) : CL=CL-(G*16)
  299. B=CL : Gosub GCOL
  300. Return 
  301. SAVIT:
  302. Gosub S4
  303. AGH:
  304. Change Mouse 2
  305. Do 
  306.    K$=Upper$(Inkey$)
  307.    Exit If K$<>""
  308. Loop 
  309. If K$="E" Then Gosub S2 : Return 
  310. If K$="0" Then Gosub SCRIN : Goto AGH
  311. If K$<"0" Then Goto AGH
  312. If Val(K$)>9 Then Goto AGH
  313. K=Val(K$)
  314. On K Gosub AMOS,SEKA,DEVPAC,BIN,DE1,DE2,HEX1,HEX2,BUFF,SCRIN
  315. Goto AGH
  316. AMOS:
  317. Gosub SOB : Screen To Back 2
  318. D$="*.asc" : T1$="Type name of the Amos" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  319. Open Out 1,F$
  320. Change Mouse 3
  321. Print #1,"Rem"
  322. Print #1,"Rem  * Created with RAINBOW WARRIOR - Amos Copper Generator *"
  323. Print #1,"Rem  *  Yup, you can blame good ol' Spadge for this one...  *"
  324. Print #1,"Rem"
  325. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  326. Print #1,"Set Rainbow 0,0,";L$;",";
  327. Print #1,Chr$(34);Chr$(34); : Print #1,",";
  328. Print #1,Chr$(34);Chr$(34); : Print #1,",";
  329. Print #1,Chr$(34);Chr$(34)
  330. Print #1,"Rainbow 0,0,";Y0;",";L$;" "
  331. Print #1,"Colour Back";BC
  332. Print #1,"Restore RDATA"
  333. Print #1,"For C=0 To ";L2$;" : Read CVA : Rain(0,C)=CVA"
  334. Print #1,"Next C : View"
  335. Print #1,"RDATA:"
  336. For F=1 To Val(L$)+3 Step 8
  337.    Print #1,"Data ";Hex$(Rain(0,Y0+F-1));",";Hex$(Rain(0,Y0+F));",";
  338.    Print #1,Hex$(Rain(0,Y0+F+1));",";Hex$(Rain(0,Y0+F+2));",";
  339.    Print #1,Hex$(Rain(0,Y0+F+3));",";Hex$(Rain(0,Y0+F+4));",";
  340.    Print #1,Hex$(Rain(0,Y0+F+5));",";Hex$(Rain(0,Y0+F+6))
  341. Next F
  342. Print #1,"Rem"
  343. Print #1,"Rem  * Alter the values in the RAINBOW and SET RAINBOW *"
  344. Print #1,"Rem  * to position and control the rainbows. See the   *"
  345. Print #1,"Rem  * manual to check on Y positioning, Length and    *"
  346. Print #1,"Rem  * which colour it is to effect.. Have fun!        *"
  347. Print #1,""
  348. Change Mouse 2
  349. Close 1 : Return 
  350. SEKA:
  351. Gosub SOB : Screen To Back 2
  352. D$="*.s" : T1$="Type name of the Seka" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  353. Open Out 1,F$
  354. Change Mouse 3
  355. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  356. Print #1,";"
  357. Print #1,";  * Created with RAINBOW WARRIOR - Amos Copper Generator"
  358. Print #1,";  *  Yup, you can blame good ol' Spadge for this one... "
  359. Print #1,";  * Holds the data for";L$;" lines of Copper-bar info !!"
  360. Print #1,";"
  361. Print #1,"RDATA:"
  362. For F=1 To Val(L$)+3 Step 8
  363.    Print #1,"        Dc.w        ";Hex$(Rain(0,Y0+F-1));",";Hex$(Rain(0,Y0+F));",";
  364.    Print #1,Hex$(Rain(0,Y0+F+1));",";Hex$(Rain(0,Y0+F+2));",";
  365.    Print #1,Hex$(Rain(0,Y0+F+3));",";Hex$(Rain(0,Y0+F+4));",";
  366.    Print #1,Hex$(Rain(0,Y0+F+5));",";Hex$(Rain(0,Y0+F+6))
  367. Next F
  368. Print #1,";"
  369. Print #1,"; * Read Newsflash Disk-Magazine!! *"
  370. Print #1,""
  371. Change Mouse 2
  372. Close 1 : Return 
  373. DEVPAC:
  374. Gosub SOB : Screen To Back 2
  375. D$="*.asm" : T1$="Type name of the Devpac" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  376. Open Out 1,F$
  377. Change Mouse 3
  378. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  379. Print #1,";"
  380. Print #1,";  * Created with RAINBOW WARRIOR - Amos Copper Generator"
  381. Print #1,";  *  Yup, you can blame good ol' Spadge for this one... "
  382. Print #1,";  * Holds the data for";L$;" lines of Copper-bar info !!"
  383. Print #1,";"
  384. Print #1,"RDATA"
  385. For F=1 To Val(L$)+3 Step 8
  386.    Print #1,"        Dc.w        ";Hex$(Rain(0,Y0+F-1));",";Hex$(Rain(0,Y0+F));",";
  387.    Print #1,Hex$(Rain(0,Y0+F+1));",";Hex$(Rain(0,Y0+F+2));",";
  388.    Print #1,Hex$(Rain(0,Y0+F+3));",";Hex$(Rain(0,Y0+F+4));",";
  389.    Print #1,Hex$(Rain(0,Y0+F+5));",";Hex$(Rain(0,Y0+F+6))
  390. Next F
  391. Print #1,";"
  392. Print #1,"; * Read Newsflash Disk-Magazine!! *"
  393. Print #1,""
  394. Change Mouse 2
  395. Close 1 : Return 
  396. BIN:
  397. Reserve As Work 10,1000 : Fill Start(10) To Start(10)+800,0
  398. Gosub SOB : Screen To Back 2
  399. D$="*.bin" : T1$="Type name of the Binary" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  400. Change Mouse 3
  401. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  402. XZ=Start(10)
  403. For F=1 To Val(L$)+3
  404.    Doke XZ,Rain(0,Y0+F)
  405.    Inc XZ : Inc XZ
  406. Next F
  407. Change Mouse 3
  408. Bsave F$,Start(10) To Start(10)+(Y1-Y0)
  409. Change Mouse 2 : Return 
  410. DE1:
  411. Gosub SOB : Screen To Back 2
  412. D$="*.dec" : T1$="Type name of the Decimal" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  413. Open Out 1,F$
  414. Change Mouse 3
  415. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  416. Print #1,";"
  417. Print #1,";  * Created with RAINBOW WARRIOR - Amos Copper Generator"
  418. Print #1,";  *  Yup, you can blame good ol' Spadge for this one... "
  419. Print #1,";  * Holds the data for";L$;" lines of Copper-bar info !!"
  420. Print #1,";"
  421. For F=1 To Val(L$)+3 Step 8
  422.    Print #1,(Rain(0,Y0+F-1));",";(Rain(0,Y0+F));",";
  423.    Print #1,(Rain(0,Y0+F+1));",";(Rain(0,Y0+F+2));",";
  424.    Print #1,(Rain(0,Y0+F+3));",";(Rain(0,Y0+F+4));",";
  425.    Print #1,(Rain(0,Y0+F+5));",";(Rain(0,Y0+F+6))
  426. Next F
  427. Print #1,";"
  428. Print #1,"; * Read Newsflash Disk-Magazine!! *"
  429. Print #1,""
  430. Change Mouse 2
  431. Close 1 : Return 
  432. DE2:
  433. Gosub SOB : Screen To Back 2
  434. D$="*.dec" : T1$="Type name of the Decimal" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  435. Open Out 1,F$
  436. Change Mouse 3
  437. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  438. Print #1,";"
  439. Print #1,";  * Created with RAINBOW WARRIOR - Amos Copper Generator"
  440. Print #1,";  *  Yup, you can blame good ol' Spadge for this one... "
  441. Print #1,";  * Holds the data for";L$;" lines of Copper-bar info !!"
  442. Print #1,";"
  443. For F=1 To Val(L$)+3
  444.    Print #1,(Rain(0,Y0+F-1))
  445. Next F
  446. Print #1,";"
  447. Print #1,"; * Read Newsflash Disk-Magazine!! *"
  448. Print #1,""
  449. HEX1:
  450. Gosub SOB : Screen To Back 2
  451. D$="*.hex" : T1$="Type name of the Hex" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  452. Open Out 1,F$
  453. Change Mouse 3
  454. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  455. Print #1,";"
  456. Print #1,";  * Created with RAINBOW WARRIOR - Amos Copper Generator"
  457. Print #1,";  *  Yup, you can blame good ol' Spadge for this one... "
  458. Print #1,";  * Holds the data for";L$;" lines of Copper-bar info !!"
  459. Print #1,";"
  460. For F=1 To Val(L$)+3 Step 8
  461.    Print #1,Hex$(Rain(0,Y0+F-1));",";Hex$(Rain(0,Y0+F));",";
  462.    Print #1,Hex$(Rain(0,Y0+F+1));",";Hex$(Rain(0,Y0+F+2));",";
  463.    Print #1,Hex$(Rain(0,Y0+F+3));",";Hex$(Rain(0,Y0+F+4));",";
  464.    Print #1,Hex$(Rain(0,Y0+F+5));",";Hex$(Rain(0,Y0+F+6))
  465. Next F
  466. Print #1,";"
  467. Print #1,"; * Read Newsflash Disk-Magazine!! *"
  468. Print #1,""
  469. Change Mouse 2
  470. Close 1 : Return 
  471. HEX2:
  472. Gosub SOB : Screen To Back 2
  473. D$="*.hex" : T1$="Type name of the Hex" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  474. Open Out 1,F$
  475. Change Mouse 3
  476. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  477. Print #1,";"
  478. Print #1,";  * Created with RAINBOW WARRIOR - Amos Copper Generator"
  479. Print #1,";  *  Yup, you can blame good ol' Spadge for this one... "
  480. Print #1,";  * Holds the data for";L$;" lines of Copper-bar info !!"
  481. Print #1,";"
  482. For F=1 To Val(L$)+3
  483.    Print #1,Hex$(Rain(0,Y0+F-1))
  484. Next F
  485. Print #1,";"
  486. Print #1,"; * Read Newsflash Disk-Magazine!! *"
  487. Print #1,""
  488. Change Mouse 2
  489. Close 1 : Return 
  490. BUFF:
  491. If PB=0 Then S$="Oi! There isn't a buffer!! Create one first!!" : Gosub DT : Wait 75 : Screen To Back 2 : Return 
  492. D$="*.buf" : T1$="Type name of Buffer" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  493. Open Out 1,F$
  494. Change Mouse 3
  495. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  496. Print #1,"RW.BUF"
  497. Print #1,BL
  498. For F=1 To BL
  499.    Print #1,BUFFER(F)
  500. Next F
  501. Print #1,"EOF"
  502. Change Mouse 2
  503. Close 1 : Return 
  504. LTEMP:
  505. D$="" : T1$="Type name of picture" : T2$="to be loaded.." : Gosub OPFILE : If F$="" Then Return 
  506. On Error Goto NIFF
  507. Load Iff F$,3 : TL=1 : Screen To Front 1 : Screen 0 : Cls 0 : On Error Goto TUTTUT
  508. H=Screen Height(3) : W=Screen Width(3) : Screen Copy 3 To 0 : Get Palette 3 : Screen Close 3 : Screen 0
  509. Return 
  510. NIFF:
  511. S$="Not an IFF file!!" : Gosub DT : Wait 50 : Screen To Back 2 : Screen 0 : TL=0 : Resume II
  512. SCRIN:
  513. D$="*.rws" : T1$="Type name of Screen" : T2$="block-file to be created" : Gosub OPFILE : If F$="" Then Return 
  514. Open Out 1,F$
  515. Change Mouse 3
  516. L$=Str$(Y1-Y0) : L2$=Str$(Y1-Y0-1)
  517. Print #1,"RW.SCN"
  518. Print #1,BC
  519. For F=0 To 279
  520.    Print #1,Rain(0,F)
  521. Next F
  522. Print #1,"EOF"
  523. Change Mouse 2
  524. Close 1 : Return 
  525. LBUF:
  526. D$="*.buf" : T1$="Type name of Buffer" : T2$="block-file to be loaded.." : Gosub OPFILE : If F$="" Then Return 
  527. Screen 0
  528. Open In 1,F$
  529. Change Mouse 3
  530. Input #1,A$ : If A$<>"RW.BUF" Then S$="This is not a Rainbow Warrior Buffer file!!" : Gosub DT : Close 1 : Wait 50 : Screen To Back 2 : Return 
  531. Input #1,BL : PB=1 : For F=1 To BL
  532.    Input #1,BUFFER(F)
  533. Next F
  534. Change Mouse 2
  535. Close 1 : Return 
  536. LSCR:
  537. D$="*.rws" : T1$="Type name of Screen" : T2$="block-file to be loaded.." : Gosub OPFILE : If F$="" Then Return 
  538. Screen 0
  539. Open In 1,F$
  540. Change Mouse 3
  541. Input #1,A$ : If A$<>"RW.SCN" Then S$="This is not a Rainbow Warrior Screen file!!" : Gosub DT : Close 1 : Wait 50 : Screen To Back 2 : Change Mouse 2 : Return 
  542. Input #1,BC : Colour Back BC
  543. For F=0 To 279
  544.    Input #1,CVV : Rain(0,F)=CVV
  545. Next F : View 
  546. Change Mouse 2
  547. Close 1 : Return 
  548. OPFILE:
  549. F$=Fsel$(D$,"",T1$,T2$)
  550. Screen 0
  551. Return 
  552. SOB:
  553. S$="Save details of Entire screen or a clip ? S/C" : Gosub DT
  554. PP:
  555. Do 
  556.    KK$=Upper$(Inkey$)
  557.    Exit If KK$<>""
  558. Loop 
  559. If KK$="S" Then Y0=0 : Y1=280 : Return 
  560. If KK$="C" Then S$="Grab Clip Now !" : Gosub DT : GROWBOX : Y0=GY1-1 : Y1=GY2+1 : Goto YUBBA
  561. Goto PP
  562. YUBBA:
  563. If Y0<1 Then Y0=0
  564. If Y1<Y0 Then Y1=Y0+1
  565. Return 
  566. GM:
  567. Do 
  568.    Exit If Mouse Click=1
  569. Loop 
  570. Return